/*
 * Copyright (c) 2022  by Junzhao
 * THIS FILE IS PART OF JAVASE Song Huongkang PROJECT
 * All Rights Reserved.
 */

package 日期与时间.JDK8之后;

import org.junit.Test;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;

/**
 * @description
 *  LocalDate、LocalTime、LocalDateTime 类是其中较重要的几个类，它们的实例
 * 是不可变的对象，分别表示使用 ISO-8601日历系统的日期、时间、日期和时间。
 * 它们提供了简单的本地日期或时间，并不包含当前的时间信息，也不包含与时区
 * 相关的信息。
 * LocalDate代表ISO格式（yyyy-MM-dd）的日期,可以存储 生日、纪念日等日期。
 * LocalTime表示一个时间，而不是日期。
 * LocalDateTime是用来表示日期和时间的，这是一个最常用的类之一。
 *      注：ISO-8601日历系统是国际标准化组织制定的现代公民的日期和时间的表示
 *          法，也就是公历。
 * @author 俊昭
 * @date 2022/4/17
*/
public class localTest {
    @Test
    public void lt1(){
        // *.now()
        // 从默认时区的系统时钟中获取当前日期。 这将查询默认时区的系统时钟，以获得当前日期
        LocalDate localDate = LocalDate.now();
        LocalTime localTime = LocalTime.now();
        LocalDateTime localDateTime = LocalDateTime.now();// 这个更常用

        System.out.println(localDate);// 2022-04-17
        System.out.println(localTime);// 13:53:27.496
        System.out.println(localDateTime);// 2022-04-17T13:53:27.496

        // *.of()
        // 从年、月、日、时、分、秒和纳秒中获取LocalDateTime的实例。
        // 这将返回一个带有指定年、月、日、时、分、秒和纳秒的LocalDateTime。
        // 该日期必须对年和月有效，否则将抛出异常。
        // nanoOfSecond -表示的纳秒，从0到999,999,999
        LocalDateTime localDateTime1 = LocalDateTime.of(2022, 4, 17, 13
                , 55, 27, 123);
        System.out.println(localDateTime1);// 2022-04-17T13:55:27.000000123 （纳秒）

        // get*()
        System.out.println(localDateTime1.getDayOfMonth());// 17
        System.out.println(localDateTime1.getDayOfYear());// 107 今年的107天
        System.out.println(localDateTime1.getDayOfWeek());// SUNDAY 周日
        System.out.println(localDateTime1.getMonth());// APRIL 四月
        System.out.println(localDateTime1.getMonthValue());// 4 四月
        System.out.println(localDateTime1.getHour());// 13 时
        System.out.println(localDateTime1.getSecond());// 27 秒


    }
    @Test
    public void lt2(){
        // 2022-04-17T13:55:27.000000123 （纳秒）
        LocalDateTime localDateTime1 = LocalDateTime.of(2022, 4, 17, 13
            , 55, 27, 123);


        //with*()
        localDateTime1 = localDateTime1.withYear(2018);
        System.out.println(localDateTime1);// 2018 -04-17T13:55:27.000000123
        localDateTime1 = localDateTime1.withDayOfYear(202);// 将日期设置为一年的第多少天
        System.out.println(localDateTime1);// 2018- 07-21 T13:55:27.000000123

        System.out.println(localDateTime1.plusDays(5));// 2018- 07-26 T13:55:27.000000123 加五天
        System.out.println(localDateTime1.minusHours(25));// 2018-07-20T12:55:27.000000123 减25小时


    }
}
